package com.blithe.wgt.utils;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class JSONUtil {

    /**
     * 将obj生成为JSON String数据
     */
    public static String createJson(Object obj) {
        return new Gson().toJson(obj);
    }

    /**
     * 将jsonStr解析为JSON数据
     */
    public static <T> T parseJson(String jsonStr, final Class<T> cls) {
        return new Gson().fromJson(jsonStr, cls);
    }

    public static <T> ArrayList<T> parseArray(String jsonStr, final Class<T> cls) {
        Type type = new TypeToken<ArrayList<JsonObject>>() {
        }.getType();
        ArrayList<JsonObject> jsonObjects = new Gson().fromJson(jsonStr, type);
        ArrayList<T> arrayList = new ArrayList<>();
        for (JsonObject jsonObject : jsonObjects) {
            arrayList.add(new Gson().fromJson(jsonObject, cls));
        }
        return arrayList;
    }
    /**
     * 解析json数组为List
     *
     * @param json  要解析的json
     * @param clazz 解析类
     * @return List
     */
    public static <T> List<T> parseToList(String json, Class<T[]> clazz) {
        Gson gson = new Gson();
        T[] array = gson.fromJson(json, clazz);
        return Arrays.asList(array);
    }



}
